(function () { 'use strict'; var popup = document.getElementById('travelgo-app-download-popup'); if (!popup) { return; } var config = window.travelgoAppDownloadPopup || {}; var maxDisplays = Number(config.maxDisplays || 2); var showDelayMs = Number(config.showDelayMs || 2200); var downloadUrl = String(config.downloadUrl || ''); var countKey = 'travelgo_app_download_popup_count_v2'; var doneKey = 'travelgo_app_download_popup_done_v2'; var card = popup.querySelector('.travelgo-app-download-popup__card'); var downloadBtn = popup.querySelector('[data-travelgo-app-popup-download]'); var closeEls = popup.querySelectorAll('[data-travelgo-app-popup-close]'); function safeGetInt(key) { try { return parseInt(window.localStorage.getItem(key) || '0', 10) || 0; } catch (_err) { return 0; } } function safeSet(key, value) { try { window.localStorage.setItem(key, value); } catch (_err) { // Ignore storage failures (private mode, etc.). } } function isDone() { try { return window.localStorage.getItem(doneKey) === '1'; } catch (_err) { return false; } } function lockScroll(on) { document.documentElement.classList.toggle( 'travelgo-app-download-popup--scroll-lock', !!on ); } function showPopup() { if (isDone()) { return; } var shownCount = safeGetInt(countKey); if (shownCount >= maxDisplays) { return; } safeSet(countKey, String(shownCount + 1)); popup.removeAttribute('hidden'); popup.setAttribute('aria-hidden', 'false'); lockScroll(true); if (card && typeof card.focus === 'function') { card.focus(); } } function closePopup(markDone) { popup.setAttribute('hidden', ''); popup.setAttribute('aria-hidden', 'true'); lockScroll(false); if (markDone) { safeSet(doneKey, '1'); } } closeEls.forEach(function (el) { el.addEventListener('click', function () { closePopup(false); }); }); document.addEventListener('keydown', function (event) { if (event.key === 'Escape' && !popup.hasAttribute('hidden')) { closePopup(false); } }); if (downloadBtn) { if (downloadUrl !== '') { downloadBtn.setAttribute('href', downloadUrl); } downloadBtn.addEventListener('click', function () { closePopup(true); }); } window.setTimeout(showPopup, Math.max(200, showDelayMs)); })();